Added hint about dialout group to usb flashing docs (#11942)
[betaflight.git] / docs / USB Flashing.md
blobb32734b0e59ddfe4201e664211bb8fb0a4c8abe2
1 # USB Flashing
2 Some newer boards with full USB support must be flashed in USB DFU mode. This is a straightforward process in Configurator versions 0.67 and newer. The standard flashing procedure should work successfully with the caveat of some platform specific problems as noted below. The "No reboot sequence" checkbox has no effect as the device will automatically be detected when already in bootloader mode (a DFU device will appear in the connect dropdown if this is the case). The Full chip erase checkbox operates as normal. The baudrate checkbox is ignored as it has no relevance to USB.
4 ### Charging-Only Cables
5 If you see no signs of life on your host computer when you plug in your board, check your cable with your mobile phone or some other USB device - some charging cables have only the power pins connected. These will power up the board, so the leds light up, but the host computer will not react to the device at all. You need a proper USB cable to connect your board to the Betaflight Configurator.
7 ## Platform Specific: Linux
8 In order for Betaflight configurator to be able to access serial ports, your account needs to be in the `dialout` group. You can add yourself to this group as below: 
9 ```
10 sudo usermod -a -G dialout <username>
11 ```
12 If your logs show `unable to open serial port` you might have skipped this step. 
13 ### Ubuntu
14 Linux requires udev rules to allow write access to USB devices for users. An example shell command to achieve this on Ubuntu is shown here:
15 ```
16 (echo '# DFU (Internal bootloader for STM32 MCUs)'
17  echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="0664", GROUP="plugdev"') | sudo tee /etc/udev/rules.d/45-stdfu-permissions.rules > /dev/null
18 ```
20 This assigns the device to the plugdev group(a standard group in Ubuntu). To check that your account is in the plugdev group type `groups` in the shell and ensure plugdev is listed. If not you can add yourself as shown (replacing `<username>` with your username):
21 ```
22 sudo usermod -a -G plugdev <username>
23 ```
24 ### Fedora
25 If you are using Fedora, you will not need to add your account to the plugdev group. 
26 Instead use the `uaccess` tag in your udev rule for dfu:
27 ```
28 (echo '# DFU (Internal bootloader for STM32 MCUs)'
29  echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="0664", TAG+="uaccess"') | sudo tee /etc/udev/rules.d/45-stdfu-permissions.rules > /dev/null
30 ```
32 ### Connectivity Issues: Modem Manager
34 If you see your ttyUSB device disappear right after the board is connected, chances are that the ModemManager service (that handles network connectivity for you) thinks it is a GSM modem. If this happens, you can issue the following command to disable the service:
35 ```
36 sudo systemctl stop ModemManager.service 
37 ```
39 If your system lacks the systemctl command, use any equivalent command that works on your system to disable services. You can likely add your device ID to a blacklist configuration file to stop ModemManager from touching the device, if you need it for cellural networking, but that is beyond the scope of betaflight documentation.
41 If you see the ttyUSB device appear and immediately disappear from the list in Betaflight Configurator when you plug in your flight controller via USB, chances are that NetworkManager thinks your board is a GSM modem and hands it off to the ModemManager daemon as the flight controllers are not known to the blacklisted.
44 ## Platform Specific: Windows
45 Chrome can have problems accessing USB devices on Windows. A driver should be automatically installed by Windows for the ST Device in DFU Mode but this doesn't always allow access for Chrome. The solution is to replace the ST driver with a libusb driver. The easiest way to do that is to download [Zadig](http://zadig.akeo.ie/). 
46 With the board connected and in bootloader mode (reset it by sending the character R via serial, or simply attempt to flash it with the correct serial port selected in Configurator): 
47 * Open Zadig
48 * Choose Options > List All Devices
49 * Select `STM32 BOOTLOADER` in the device list
50 * Choose `WinUSB (v6.x.x.x)` in the right hand box
51 ![Zadig Driver Procedure](assets/images/zadig-dfu.png)
52 * Click Replace Driver
53 * Restart Chrome (make sure it is completely closed, logout and login if unsure)
54 * Now the DFU device should be seen by Configurator